package org.example.service;

import org.example.entity.Account;

import org.example.entity.TFile;
import org.example.entity.User;
import org.example.entity.UserDTO;
import org.example.exception.CustomException;
import org.example.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

@Service
public class UserService {

    @Resource
    private  UserMapper userMapper;

    public void register(User user) {
        String name=user.getUsername();
        User oldUser=userMapper.selectByUsername(name);
        if(oldUser==null){
        userMapper.insert(user);
        }
    }

    //
//    public List<User> selectAll(User user) {
//        List<User> list= userMapper.selectAll(user);
//        return list;
//    }
//
//    public User selectById(Integer id) {
//       User user= userMapper.selectById(id);
//       return user;
//    }
//
//    public PageInfo<User> selectPage(User user, @RequestParam(defaultValue = "1") Integer pageNum, Integer pageSize){
//        PageHelper.startPage(pageNum,pageSize);
//        List<User> list=userMapper.selectAll(user);
//        return PageInfo.of(list);
//    }
//    public void add(User user) {
//        String username = user.getUsername();
//        User dbUser= userMapper.selectByUsername(username);
//        if(dbUser != null) {//账号已存在
//            throw new CustomException("500","账号已存在");
//        }
//        if(StrUtil.isBlank(user.getPassword())){//密码没填
//            user.setPassword("user");//默认密码
//        }
//        if(StrUtil.isBlank(user.getName())){//名字没填
//             user.setName(user.getUsername());//默认名称
//        }
//        user.setRole("ADMIN");//员工角色
//        userMapper.insert(user);
//
//    }
//
//    public void delete(Integer id) {
//
//        userMapper.delete(id);
//    }
//
//    public void upadte(User user) {
//        userMapper.update(user);
//    }
//
//    public void deleteBatch(List<Integer> ids) {
//        for (Integer id : ids) {
//            this.delete(id);
//        }
//    }
    public UserDTO login(Account account) {
        String username = account.getUsername();
        User dbUser= userMapper.selectByUsername(username);
        if(dbUser == null) {
            throw new CustomException("500", "账号不存在");
        }
        String password = account.getPassword();

        if(!dbUser.getPassword().equals(password)) {
            throw new CustomException("500","密码错误");
        }
        UserDTO userDTO = new UserDTO();
        BeanUtils.copyProperties(dbUser,userDTO);
        return userDTO;
    }


    /**
     * 根据用户id在文件表中查出所有属于他的文件列表
     * @param userId
     * @return
     */
    public List<TFile> selectFileList(int userId) {
       return  userMapper.selectFileList(userId);
    }

    /**
     * 查询自己的信息，个人信息页面用
     * @param id
     */
    public UserDTO selectUserMsg(Integer id) {
       return userMapper.selectUserMsg(id);
    }

    public boolean upDateUserInfo(UserDTO userDTO) {
        try {
            User user = new User();
            BeanUtils.copyProperties(userDTO, user);
            userMapper.updateById(user);
        } catch (Exception e) {
            return false;
        }
        return true;
    }

    public boolean updateUserAvatar(int userid, String avatar) {
        return userMapper.updateUserAvatar(userid,avatar)>0;
    }


//    public void updatePassword(Account account) {
//        Integer id = account.getId();
//        User dbUser= userMapper.selectById(id);
//        if(!dbUser.getPassword().equals(account.getPassword())) {
//            throw new CustomException("500","原密码错误");
//        }
//        dbUser.setPassword(account.getNewPassword());
//        userMapper.update(dbUser);
//    }
}
